#ifndef _THREADPOOL_H
#define _THREADPOOL_G

#include <vector>
#include <thread>
#include <condition_variable>
#include "02_TaskQueue.h"

// 前置声明（根据实际TaskQueue实现调整）
class Task;

class ThreadPool {
public:
    // 构造函数（线程数, 队列容量）
    ThreadPool(size_t threadnum, size_t capacity);
    
    // 析构函数
    ~ThreadPool();
    
    // 启动线程池
    void start();
    
    // 停止线程池
    void stop();
    
    // 添加任务（根据图中参数应为指针版本）
    void addTask(function<void()>&& ptask);
    
    // 获取任务（内部使用）
    function<void()> getTask();
    
    // 任务执行逻辑（内部使用）
    void doTask();

private:
    size_t _threadnum;            // 线程数量
    std::vector<std::thread> _threads; // 线程容器
    size_t _capacity;             // 任务队列容量
    TaskQueue _taskQue;           // 任务队列（需自定义实现）
    bool _isExit;                 // 退出标志
    //condition_variable _cond;
    //mutex _thmutex;
};

#endif

